package com.ashapo.pattern.pattern012flyweight;

//第4步
//使用工厂并通过传递诸如颜色的信息来获得具体类的对象。

public class FlyweightPatternDemo {

    private static final String[] colors = { "Red", "Green", "Blue", "White", "Black" };

    /**
     * 享元模式
     * @param args
     */
    public static void main(String[] args) {

        for(int i=0; i < 20; ++i) {
            Circle circle = (Circle)ShapeFactory.getCircle(getRandomColor());
            circle.setX(getRandomX());
            circle.setY(getRandomY());
            circle.setRadius(100);
            circle.draw();
        }
    }

    private static String getRandomColor() {
        return colors[(int)(Math.random()*colors.length)];
    }

    private static int getRandomX() {
        return (int)(Math.random()*100 );
    }

    private static int getRandomY() {
        return (int)(Math.random()*100);
    }
}
